/**
 * 
 */
package br.com.skynix.tcmc.model.rh;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeAuditavel;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_falta_justificada")
public class FaltaJustificada extends EntidadeAuditavel {
	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_funcionario_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_falta_justificada")
	private Funcionario funcionario;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_tipo_ausencia_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_falta_justificada")
	private TipoAusencia tipoAusencia;

	@NotNull
	@Column(name = "flag_meio_expediente", nullable = false,
			columnDefinition = "BOOLEAN DEFAULT FALSE")
	private Boolean flagMeioExpediente;

	@NotNull
	@Column(name = "data_inicio", nullable = false)
	private Timestamp dataInicio;

	@NotNull
	@Column(name = "data_termino", nullable = false)
	private Timestamp dataTermino;

	@NotNull
	@Size(max = 255)
	@Column(nullable = false, length = 255)
	private String motivo;

	@NotNull
	@Column(name = "flag_aprovado", nullable = false,
			columnDefinition = "BOOLEAN DEFAULT FALSE")
	private Boolean flagAprovado;

	@NotNull
	@Column(name = "flag_visto_administrador", nullable = false,
			columnDefinition = "BOOLEAN DEFAULT FALSE")
	private Boolean flagVistoAdministrador;

	/**
	 * @return the funcionario
	 */
	public Funcionario getFuncionario() {
		return funcionario;
	}

	/**
	 * @param funcionario the funcionario to set
	 */
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	/**
	 * @return the tipoAusencia
	 */
	public TipoAusencia getTipoAusencia() {
		return tipoAusencia;
	}

	/**
	 * @param tipoAusencia the tipoAusencia to set
	 */
	public void setTipoAusencia(TipoAusencia tipoAusencia) {
		this.tipoAusencia = tipoAusencia;
	}

	/**
	 * @return the flagMeioExpediente
	 */
	public Boolean getFlagMeioExpediente() {
		return flagMeioExpediente;
	}

	/**
	 * @param flagMeioExpediente the flagMeioExpediente to set
	 */
	public void setFlagMeioExpediente(Boolean flagMeioExpediente) {
		this.flagMeioExpediente = flagMeioExpediente;
	}

	/**
	 * @return the dataInicio
	 */
	public Timestamp getDataInicio() {
		return dataInicio;
	}

	/**
	 * @param dataInicio the dataInicio to set
	 */
	public void setDataInicio(Timestamp dataInicio) {
		this.dataInicio = dataInicio;
	}

	/**
	 * @return the dataTermino
	 */
	public Timestamp getDataTermino() {
		return dataTermino;
	}

	/**
	 * @param dataTermino the dataTermino to set
	 */
	public void setDataTermino(Timestamp dataTermino) {
		this.dataTermino = dataTermino;
	}

	/**
	 * @return the motivo
	 */
	public String getMotivo() {
		return motivo;
	}

	/**
	 * @param motivo the motivo to set
	 */
	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}

	/**
	 * @return the flagAprovado
	 */
	public Boolean getFlagAprovado() {
		return flagAprovado;
	}

	/**
	 * @param flagAprovado the flagAprovado to set
	 */
	public void setFlagAprovado(Boolean flagAprovado) {
		this.flagAprovado = flagAprovado;
	}

	/**
	 * @return the flagVistoAdministrador
	 */
	public Boolean getFlagVistoAdministrador() {
		return flagVistoAdministrador;
	}

	/**
	 * @param flagVistoAdministrador the flagVistoAdministrador to set
	 */
	public void setFlagVistoAdministrador(Boolean flagVistoAdministrador) {
		this.flagVistoAdministrador = flagVistoAdministrador;
	}
}
